iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 17
0
AI & Data

30 天學會深度學習和 Tensorflow系列 第 17

16. 深度學習甜點系列:卷積網路總結

  • 分享至 

  • xImage
  •  

在這一系列介紹 Convolution Neural Network 在電腦視覺的文章中,我們先了解了卷積網路的原理。也看了許多不同的類神經網路架構,以 Convolution layer 為基礎,加上了 pooling layer 為主的主要層級架構,一層又一層的堆成深度類神經網路。

這些夢想著高度與台北 101 大樓並駕齊驅的深度類神經網路有:

  1. 利用特製的 Residual Block 構成的ResNet
  2. 利用 Inception Module 不僅想要變高,還變胖的 GoogleLeNet

這類深度網路的趨勢都是希望解決深度網路中的 gradient vanishing 問題,而使訓練深度網路時不會造成 training error 的 degradation,又或在訓練時 training error 不會 converge 到一個最低點,反而在某個 iteration, training error 不降反升的情況。

接著,我們介紹了電腦視覺領域中的應用,但在介紹應用之前,我們先定義了物體識別中不同層級問題的難度。其中包括了簡介影像分類,物體定位以及物體識別的問題定義。

而介紹關於物體識別問題的範疇外,我們也介紹了現今最熱門可對影片做即時的物體辨識演算法 YOLO,以及雖然無法做即時物體辨識,但因為將影像識別,物體定位以及偵測三個問題結合而成的 OverFeat 高正確率的演算法所用的 sliding window 方法。當然,還有基於影像分割,避免對每一個可能位置做物體偵測的 Region Proposal 方法。

今天,在進入另一個不同主題前,先對使用 Convolution network 達成電腦視覺應用的任務前,一些在課程中,提到的訓練和建模的技巧:

  1. 使用預先訓練好的類神經網路:因為深度類神經網路的訓練時間通常耗時且參數數目龐大,又非常的難調整,所以大多的電腦視覺應用都會重新利用對較大的影像庫訓練而成的模型,在這個模型之上,建構自己的分類器。

使用預先訓練好的類神經網路,但用於不同的任務類型,在電腦視覺的領域幾乎已經是一種常見的方法。這個方法尤其普遍應用在新興的 Transfer Learning 的領域上。

Transfer Learning 如同前所述,重新使用一個預先訓練好的類神經網路於不同的任務中。這個任務必須要與該預先訓練好的類神經網路有相似之處。如,若預先訓練好的類神經網路為分類任務,則使用此網路架構來做 transfer learning 時,也必須為影像的分類任務,只不過分類的數目可以不同。

  1. 增加訓練資料的變異性:有時因為一些影像並不是容易獲得(如,具有肖像權的影像),又影像識別的正確率通常會受到影像的品質影像。在這些前提下,人為的刻意製造一些低品質的影像,或對影像做放大縮小的改變,以增加訓練資料量裡的變異。

另外,在簡述物體辨識之後,我們也提到了近期因為 Generative Adversarial network 的成功,而興起的創意影像合成研究,如影像風格轉移。在此類的研究中,最大的貢獻在於成功的將類神經網路中每一層所學到的特徵編碼視覺化。

在電腦視覺中,嘗試視覺化卷積類神經網路有助於了解特徵且診斷模型。關於視覺化卷積網路,一般而言,有三種做法:

之一,是對權重視覺化。透過對卷積網路的權重做視覺化,我們可以知道有多少權重是被高度激活,而有多少則是被抑制。這類的視覺化有助於診斷是否使用過多的神經元而導致過度擬合(overfitting)或檢視對權重做 regularization 的結果。

之二,是對激化層( activation layer )視覺化。在這個方法中又可分為以下方法:

  • 視覺化單一輸入激化影像
  • 視覺化單一激化神經元

視覺化單一輸入激化影像的方法,將測試影像以正向傳播的方式得到輸出後,再繪製激發程度。通常,在網路底端的卷積層會保留大量的像素級資料,而越靠近頂端分類器的卷積層則會保留測試影像中的物體獨有的特徵。

為了能得到輸入影像和權重學習關聯的資訊,Erhan et al 在 2009 提出以梯度上升的方法,針對多層感知器(Multi-layered Perceptron)架構,來找出哪一部分的輸入影像可最大化激化層的神經元,也就是視覺化單一激化神經元的方法。

在 2013 年則由 Zeiler & Fergus 則針對卷積網路,發表 deconvolution network 架構,重建原輸入影像,並映射單一激發神經元所在的抽象特徵值到像素層級的位置。

最後,則是視覺化分類層:

2013 年 Zeiler & Fergus 除了利用 deconvolution network 架構來重建影像,並提出使用擾動的方式(perturbation-based)來建立測試影像對於分類結果的關係。該方法會對原輸入影像進行局部遮蓋,並量測遮蓋該區域會造成多少分類正確度的損失,並以此繪製 heatmap。

2013 年 Simonyan et al 和 2016 年 R. Selvaraju et al 則將上述 gradient-based 的方法應用在分類層,稱為 Classification Activion Map (Grad-CAM)並以 heat map 的方式將有助於分類器正確分類的影像特徵以色彩梯度的方式註解。

對類神經網路每一層的非線性輸出視覺化,能逐步的解構類神經網路如何學習或編碼影像,使之成為完成任務的特徵。這對影像這類具有相當多的像素的資料是相當有助益的。透過對 convolution network 每一層輸出做視覺化,我們逐漸得以分解出影像中各個元素,如紋理和色相,亦能從這些元素將人類感官所感知的風格,準確的定義成數學公式。


上一篇
15. 深度學習甜點系列:偽造大師
下一篇
17. 深度學習甜點系列:有完沒完的循環網路(RNN)
系列文
30 天學會深度學習和 Tensorflow30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言